'''
    Goblinoid: Experience all of MediaGoblin on an Android Device
    Copyright (C) 2015 Dylan Jeffers

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
'''

# media view model
from __future__ import print_function
from os.path import join, dirname
from glob import glob

from kivy.properties import DictProperty, ListProperty, StringProperty
from kivy.uix.widget import Widget
from kivy.utils import platform


class MediaModel(Widget):
    screen_dict = DictProperty(None)
    gallery_content = ListProperty(None)
    upload_image = StringProperty()

    def __init__(self, **kwargs):
        self.init_screen_dict()
        self.init_gallery_content()

    def init_screen_dict(self):
        import mediaviews
        self.screen_dict = dict([
            ('gallery', mediaviews.GalleryView),
            ('camera', mediaviews.CameraView),
            ('camcorder', mediaviews.CamcorderView),
            ('upload', mediaviews.UploadView)
            ])

    def init_gallery_content(self):

        # this function may be used to grab images from every folder
        def add_images(data, dirname, names):
            pass
            self.gallery_content = data

        data = []
        if platform == 'android':
            image_dir = '/sdcard/DCIM/Camera'
        else:
            image_dir = join(dirname(__file__), 'images')

        for image in glob(join(image_dir, '*.jpg')):
            data.append(image)
        self.gallery_content = data

    def add_image(self, *args):
        try:
            image = args[0].background_normal
            print(image)
            self.image = image
        except IndexError, e:
            print('no image found. Error: {0}'.format(e))
